package cc.rengu.igas.momp.facade;

import cc.rengu.igas.momp.facade.request.ClaimCouponRequest;
import cc.rengu.igas.momp.facade.request.QueryCouponDetailRequest;
import cc.rengu.igas.momp.facade.request.RedeemCouponRequest;
import cc.rengu.igas.momp.facade.request.ReturnCouponRequest;
import cc.rengu.igas.momp.facade.response.ClaimCouponResponse;
import cc.rengu.igas.momp.facade.response.QueryCouponDetailResponse;
import cc.rengu.igas.momp.facade.response.RedeemCouponResponse;
import cc.rengu.igas.momp.facade.response.ReturnCouponResponse;
import cc.rengu.igas.momp.facade.result.Result;

/**
 * @author Jinan Liu
 * @date 2020/3/11 23:17
 * @description 卡券管理接口
 */
public interface CouponManagementService {

    /**
     * 领取卡券
     *
     * @param claimCouponRequest
     * @return cc.rengu.igas.momp.facade.result.Result<cc.rengu.igas.momp.facade.response.ClaimCouponResponse>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:52
     */
    Result<ClaimCouponResponse> claimCoupon(ClaimCouponRequest claimCouponRequest);

    /**
     * 查询卡券信息
     *
     * @param queryCouponDetailRequest
     * @return cc.rengu.igas.momp.facade.result.Result<cc.rengu.igas.momp.facade.response.QueryCouponDetailResponse>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:52
     */
    Result<QueryCouponDetailResponse> queryCouponDetail(QueryCouponDetailRequest queryCouponDetailRequest);

    /**
     * 核销卡券
     *
     * @param redeemCouponRequest
     * @return cc.rengu.igas.momp.facade.result.Result<cc.rengu.igas.momp.facade.response.RedeemCouponResponse>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:53
     */
    Result<RedeemCouponResponse> redeemCoupon(RedeemCouponRequest redeemCouponRequest);

    /**
     * 卡券退回
     *
     * @param returnCouponRequest
     * @return cc.rengu.igas.momp.facade.result.Result<cc.rengu.igas.momp.facade.response.ReturnCouponResponse>
     * @throws Exception 异常信息
     * @author Jinan Liu
     * @date 2020/3/28 18:53
     */
    Result<ReturnCouponResponse> returnCoupon(ReturnCouponRequest returnCouponRequest);
}
